import 'package:json_annotation/json_annotation.dart';

part 'data.g.dart';

@JsonSerializable()
class ExpertData {
  ExpertData({
    this.expertId,
    this.researchArea,
    this.research,
    this.jobTitle,
    this.topTitle,
    this.getTime,
    this.titleCertificate,
    this.ncp,
    this.getNcp,
    this.ncpAddress,
    this.headPortrait,
    this.summary,
    this.individual,
    this.showPublic,
    this.fullName,
    this.linkUserId,
    this.expertLink,
    this.auditTime,
    this.auditStatus,
    this.auditUser,
    this.auditOpinion,
    this.state,
    this.remark,
    this.createTime,
    this.updateTime,
    this.browseNum,
    this.recommended,
    this.importFlag,
    this.approvalFlag,
    this.talkUserId,
    this.talkUserName,
    this.talkUserLogo,
    this.talkUserPhone,
    this.talkUserIdentity,
    this.talkUserProvince,
    this.talkUserCity,
    this.talkUserProvinceName,
    this.talkUserCityName,
    this.talkUserType,
    this.createBy,
    this.netImage,
    this.expertType,
    this.importExpertType,
    this.keyWord,
    this.userInfo,
    this.userName,
    this.agentId,
    this.researchAreaId,
    this.agentUserInfoId,
    this.agentApplyId,
    this.auditStatusLabel,
    this.topState,
    this.topStartTime,
    this.topEndTime,
    this.topCreateTime,
    this.mallInfo,
  });

  int expertId;
  dynamic researchArea;
  String research;
  String jobTitle;
  String topTitle;
  dynamic getTime;
  dynamic titleCertificate;
  dynamic ncp;
  dynamic getNcp;
  dynamic ncpAddress;
  String headPortrait;
  String summary;
  dynamic individual;
  int showPublic;
  int fullName;
  int linkUserId;
  dynamic expertLink;
  dynamic auditTime;
  dynamic auditStatus;
  dynamic auditUser;
  dynamic auditOpinion;
  dynamic state;
  dynamic remark;
  dynamic createTime;
  dynamic updateTime;
  int browseNum;
  int recommended;
  int importFlag;
  dynamic approvalFlag;
  int talkUserId;
  String talkUserName;
  String talkUserLogo;
  String talkUserPhone;
  dynamic talkUserIdentity;
  int talkUserProvince;
  int talkUserCity;
  String talkUserProvinceName;
  String talkUserCityName;
  String talkUserType;
  dynamic createBy;
  String netImage;
  int expertType;
  int importExpertType;
  dynamic keyWord;
  UserInfo userInfo;
  dynamic userName;
  dynamic agentId;
  dynamic researchAreaId;
  dynamic agentUserInfoId;
  dynamic agentApplyId;
  dynamic auditStatusLabel;
  dynamic topState;
  dynamic topStartTime;
  dynamic topEndTime;
  dynamic topCreateTime;
  dynamic mallInfo;

  factory ExpertData.fromJson(Map<String, dynamic> json) =>
      _$ExpertDataFromJson(json);
  Map<String, dynamic> toJson() => _$ExpertDataToJson(this);
}

@JsonSerializable()
class UserInfo {
  UserInfo({
    this.userId,
    this.state,
    this.type,
    this.addId,
    this.realName,
    this.loginName,
    this.email,
    this.nickname,
    this.showNickname,
    this.phoneNumber,
    this.createTime,
    this.updateTime,
    this.comment,
    this.identity,
    this.message,
    this.sex,
    this.birthdate,
    this.province,
    this.city,
    this.accountHead,
    this.workUnit,
    this.jobDuties,
    this.auditStatus,
    this.complete,
    this.keyWord,
    this.expertInfo,
    this.facilitator,
    this.sort,
    this.provinceName,
    this.cityName,
    this.labShareNum,
    this.shareNum,
    this.shareUserId,
    this.histChatList,
    this.imMessage,
    this.userProvince,
    this.userCity,
    this.userArea,
    this.gkOpenId,
    this.kcOpenId,
    this.balance,
    this.freeze,
    this.searchCity,
    this.searchProv,
    this.vipLevel,
    this.vipLevelIcon,
  });

  dynamic userId;
  dynamic state;
  dynamic type;
  dynamic addId;
  String realName;
  dynamic loginName;
  dynamic email;
  dynamic nickname;
  int showNickname;
  dynamic phoneNumber;
  dynamic createTime;
  dynamic updateTime;
  dynamic comment;
  dynamic identity;
  dynamic message;
  dynamic sex;
  dynamic birthdate;
  dynamic province;
  String city;
  dynamic accountHead;
  dynamic workUnit;
  dynamic jobDuties;
  dynamic auditStatus;
  int complete;
  dynamic keyWord;
  dynamic expertInfo;
  dynamic facilitator;
  dynamic sort;
  dynamic provinceName;
  String cityName;
  dynamic labShareNum;
  dynamic shareNum;
  dynamic shareUserId;
  dynamic histChatList;
  dynamic imMessage;
  dynamic userProvince;
  dynamic userCity;
  dynamic userArea;
  dynamic gkOpenId;
  dynamic kcOpenId;
  dynamic balance;
  dynamic freeze;
  dynamic searchCity;
  dynamic searchProv;
  dynamic vipLevel;
  dynamic vipLevelIcon;

  factory UserInfo.fromJson(Map<String, dynamic> json) => UserInfo(
        userId: json["userId"],
        state: json["state"],
        type: json["type"],
        addId: json["addId"],
        realName: json["realName"],
        loginName: json["loginName"],
        email: json["email"],
        nickname: json["nickname"],
        showNickname: json["showNickname"],
        phoneNumber: json["phoneNumber"],
        createTime: json["createTime"],
        updateTime: json["updateTime"],
        comment: json["comment"],
        identity: json["identity"],
        message: json["message"],
        sex: json["sex"],
        birthdate: json["birthdate"],
        province: json["province"],
        city: json["city"],
        accountHead: json["accountHead"],
        workUnit: json["workUnit"],
        jobDuties: json["jobDuties"],
        auditStatus: json["auditStatus"],
        complete: json["complete"],
        keyWord: json["keyWord"],
        expertInfo: json["expertInfo"],
        facilitator: json["facilitator"],
        sort: json["sort"],
        provinceName: json["provinceName"],
        cityName: json["cityName"],
        labShareNum: json["labShareNum"],
        shareNum: json["shareNum"],
        shareUserId: json["shareUserId"],
        histChatList: json["histChatList"],
        imMessage: json["imMessage"],
        userProvince: json["userProvince"],
        userCity: json["userCity"],
        userArea: json["userArea"],
        gkOpenId: json["gkOpenId"],
        kcOpenId: json["kcOpenId"],
        balance: json["balance"],
        freeze: json["freeze"],
        searchCity: json["searchCity"],
        searchProv: json["searchProv"],
        vipLevel: json["vipLevel"],
        vipLevelIcon: json["vipLevelIcon"],
      );
}
